import { DateTimeCore } from './DateTimeCore';

/**
 * 日期时间转换器类
 * @class DateTimeConverter
 * @description 提供日期时间转换功能，用于将日期时间转换为不同的格式和类型
 */
export class DateTimeConverter {
  /**
   * DateTimeCore实例，提供基础日期时间操作
   * @private
   */
  private __core: DateTimeCore;

  /**
   * 构造函数
   * @param {DateTimeCore} core - DateTimeCore实例
   * @returns {DateTimeConverter} 新的DateTimeConverter实例
   */
  constructor(core: DateTimeCore) {
    this.__core = core;
  }

  /**
   * 转换为原生Date对象
   * @returns {Date} 对应的JavaScript原生Date对象
   * @example
   * const date = new DateTime();
   * const jsDate = date.converter.date(); // 返回Date对象实例
   */
  date(): Date {
    return this.__core.dayjs().toDate();
  }

  /**
   * 获取毫秒级时间戳
   * @returns {number} 13位毫秒级时间戳
   * @example
   * const date = new DateTime('2025-01-01');
   * const millisecondTimestamp = date.converter.millisecondTimestamp(); // 1765411200000
   */
  millisecondTimestamp(): number {
    return this.__core.dayjs().valueOf();
  }

  /**
   * 获取秒级时间戳
   * @returns {number} 10位秒级时间戳
   * @example
   * const date = new DateTime('2025-01-01');
   * const timestamp = date.converter.timestamp(); // 1765411200
   */
  timestamp(): number {
    return this.__core.dayjs().unix();
  }

  /**
   * 转换为ISO格式字符串
   * @returns {string} ISO格式的日期时间字符串，符合ISO 8601标准
   * @example
   * const date = new DateTime('2025-12-11 14:30:45');
   * const isoString = date.converter.isoString(); // '2025-12-11T14:30:45.000Z'
   */
  isoString(): string {
    return this.__core.dayjs().toISOString();
  }
}